home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / compiler.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  5KB  |  165 lines

  1. #ifndef __LINUX_COMPILER_H
  2. #define __LINUX_COMPILER_H
  3.  
  4. #ifndef __ASSEMBLY__
  5.  
  6. #ifdef __CHECKER__
  7. # define __user        __attribute__((noderef, address_space(1)))
  8. # define __kernel    /* default address space */
  9. # define __safe        __attribute__((safe))
  10. # define __force    __attribute__((force))
  11. # define __iomem    __attribute__((noderef, address_space(2)))
  12. # define __acquires(x)    __attribute__((context(0,1)))
  13. # define __releases(x)    __attribute__((context(1,0)))
  14. # define __acquire(x)    __context__(1)
  15. # define __release(x)    __context__(-1)
  16. # define __cond_lock(x)    ((x) ? ({ __context__(1); 1; }) : 0)
  17. extern void __chk_user_ptr(void __user *);
  18. extern void __chk_io_ptr(void __iomem *);
  19. #else
  20. # define __user
  21. # define __kernel
  22. # define __safe
  23. # define __force
  24. # define __iomem
  25. # define __chk_user_ptr(x) (void)0
  26. # define __chk_io_ptr(x) (void)0
  27. # define __builtin_warning(x, y...) (1)
  28. # define __acquires(x)
  29. # define __releases(x)
  30. # define __acquire(x) (void)0
  31. # define __release(x) (void)0
  32. # define __cond_lock(x) (x)
  33. #endif
  34.  
  35. #if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
  36. #define inline          __inline__
  37. #define __inline__      __inline__
  38. #define __inline        __inline__
  39. #ifndef asm
  40. #  define asm           __asm__
  41. #endif
  42. #ifndef volatile
  43. #  define volatile      __volatile__
  44. #endif
  45. #endif
  46.  
  47. #ifdef __KERNEL__
  48. #if __GNUC__ > 3
  49. # include <linux/compiler-gcc+.h>    /* catch-all for GCC 4, 5, etc. */
  50. #elif __GNUC__ == 3
  51. # include <linux/compiler-gcc3.h>
  52. #elif __GNUC__ == 2
  53. # include <linux/compiler-gcc2.h>
  54. #else
  55. # error Sorry, your compiler is too old/not recognized.
  56. #endif
  57. #endif
  58.  
  59. /* Intel compiler defines __GNUC__. So we will overwrite implementations
  60.  * coming from above header files here
  61.  */
  62. #ifdef __INTEL_COMPILER
  63. # include <linux/compiler-intel.h>
  64. #endif
  65.  
  66. /*
  67.  * Generic compiler-dependent macros required for kernel
  68.  * build go below this comment. Actual compiler/compiler version
  69.  * specific implementations come from the above header files
  70.  */
  71.  
  72. #define likely(x)    __builtin_expect(!!(x), 1)
  73. #define unlikely(x)    __builtin_expect(!!(x), 0)
  74.  
  75. /* Optimization barrier */
  76. #ifndef barrier
  77. # ifdef mb
  78. #   define barrier() mb()
  79. # else
  80. #   define barrier() __asm__ __volatile__ ("" : : : "memory")
  81. # endif
  82. #endif
  83.  
  84. #ifndef RELOC_HIDE
  85. # define RELOC_HIDE(ptr, off)                    \
  86.   ({ unsigned long __ptr;                    \
  87.      __ptr = (unsigned long) (ptr);                \
  88.     (typeof(ptr)) (__ptr + (off)); })
  89. #endif
  90.  
  91. #endif /* __ASSEMBLY__ */
  92.  
  93. /*
  94.  * Allow us to mark functions as 'deprecated' and have gcc emit a nice
  95.  * warning for each use, in hopes of speeding the functions removal.
  96.  * Usage is:
  97.  *         int __deprecated foo(void)
  98.  */
  99. #ifndef __deprecated
  100. # define __deprecated        /* unimplemented */
  101. #endif
  102.  
  103. #ifndef __must_check
  104. #define __must_check
  105. #endif
  106.  
  107. /*
  108.  * Allow us to avoid 'defined but not used' warnings on functions and data,
  109.  * as well as force them to be emitted to the assembly file.
  110.  *
  111.  * As of gcc 3.3, static functions that are not marked with attribute((used))
  112.  * may be elided from the assembly file.  As of gcc 3.3, static data not so
  113.  * marked will not be elided, but this may change in a future gcc version.
  114.  *
  115.  * In prior versions of gcc, such functions and data would be emitted, but
  116.  * would be warned about except with attribute((unused)).
  117.  */
  118. #ifndef __attribute_used__
  119. # define __attribute_used__    /* unimplemented */
  120. #endif
  121.  
  122. /*
  123.  * From the GCC manual:
  124.  *
  125.  * Many functions have no effects except the return value and their
  126.  * return value depends only on the parameters and/or global
  127.  * variables.  Such a function can be subject to common subexpression
  128.  * elimination and loop optimization just as an arithmetic operator
  129.  * would be.
  130.  * [...]
  131.  */
  132. #ifndef __attribute_pure__
  133. # define __attribute_pure__    /* unimplemented */
  134. #endif
  135.  
  136. /*
  137.  * From the GCC manual:
  138.  *
  139.  * Many functions do not examine any values except their arguments,
  140.  * and have no effects except the return value.  Basically this is
  141.  * just slightly more strict class than the `pure' attribute above,
  142.  * since function is not allowed to read global memory.
  143.  *
  144.  * Note that a function that has pointer arguments and examines the
  145.  * data pointed to must _not_ be declared `const'.  Likewise, a
  146.  * function that calls a non-`const' function usually must not be
  147.  * `const'.  It does not make sense for a `const' function to return
  148.  * `void'.
  149.  */
  150. #ifndef __attribute_const__
  151. # define __attribute_const__    /* unimplemented */
  152. #endif
  153.  
  154. #ifndef __always_inline
  155. #define __always_inline inline
  156. #endif
  157.  
  158. #ifdef __cplusplus
  159. #define __cast__(_to) (_to)
  160. #else
  161. #define __cast__(_to)
  162. #endif
  163.  
  164. #endif /* __LINUX_COMPILER_H */
  165.